home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cgazv5n4.arc / HYPHEN.H < prev    next >
C/C++ Source or Header  |  1991-09-23  |  1KB  |  33 lines

  1. /*--- Listing 1 ------------------------- HYPHEN.H -------------
  2.  * Note that a letter is marked if a hyphen can be inserted IN
  3.  * FRONT of it. Ctype is the type of the array that contains the
  4.  * word, one letter per array element. It doesn't have to be an
  5.  * array of char. Note that a string of ctype must be zero termi-
  6.  * nated, even if ctype isn't a char.                                                        *
  7.  *
  8.  * The CHAR macro isolates the character portion of the word. In
  9.  * this case the character is the bottom seven bits. It can actu-
  10.  * ally be anywhere in the ctype, but CHAR must isolate and right
  11.  * justify it.
  12.  *
  13.  * Finally, ISCHAR evaluates to true if it's argument is a legi-
  14.  * timate character (as compared to a font-change request,
  15.  * or whatever)
  16.  *-------------------------------------------------------------*/
  17.  
  18. #define HYPHEN          0x80
  19. #define HYPHENATE(c)    ( (c) |=  HYPHEN )
  20. #define UNHYPHENATE(c)  ( (c) &= ~HYPHEN )
  21. #define HAS_HYPHEN(c)   ( (c) &   HYPHEN )
  22.  
  23. typedef unsigned char   uchar;
  24. typedef uchar           ctype;
  25.  
  26. /* THE FOLLOWING MAY NOT HAVE SIDE EFFECTS */
  27. #define CHAR(c)         ((c) &  0x7f)
  28. #define ISCHAR(c)       isalpha(CHAR(c))
  29.  
  30. extern int
  31.     exception ( ctype *word, ctype *end ); /* in except.c  */
  32. extern int
  33.     hyphen    ( ctype *beg,  ctype *end ); /* in hyphen.c  */